﻿; ; http://www.autohotkey.com/board/topic/75390-ahk-l-unicode-uri-encode-url-encode-function/?p=480216
; UriEncode(Uri, Enc = "UTF-8")
; {
;    StrPutVar(Uri, Var, Enc)
;    f := A_FormatInteger
;    SetFormat, IntegerFast, H
;    Loop
;    {
;       Code := NumGet(Var, A_Index - 1, "UChar")
;       If (!Code)
;          Break
;       If (Code >= 0x30 && Code <= 0x39 ; 0-9
;          || Code >= 0x41 && Code <= 0x5A ; A-Z
;          || Code >= 0x61 && Code <= 0x7A) ; a-z
;          Res .= Chr(Code)
;       Else
;          Res .= "%" . SubStr(Code + 0x100, -1)
;    }
;    SetFormat, IntegerFast, %f%
;    Return, Res
; }

; UriDecode(Uri, Enc = "UTF-8")
; {
;    Pos := 1
;    Loop
;    {
;       Pos := RegExMatch(Uri, "i)(?:%[\da-f]{2})+", Code, Pos++)
;       If (Pos = 0)
;          Break
;       VarSetCapacity(Var, StrLen(Code) // 3, 0)
;       StringTrimLeft, Code, Code, 1
;       Loop, Parse, Code, `%
;          NumPut("0x" . A_LoopField, Var, A_Index - 1, "UChar")
;       StringReplace, Uri, Uri, `%%Code%, % StrGet(&Var, Enc), All
;    }
;    Return, Uri
; }

; StrPutVar(Str, ByRef Var, Enc = "")
; {
;    Len := StrPut(Str, Enc) * (Enc = "UTF-16" || Enc = "CP1200" ? 2 : 1)
;    VarSetCapacity(Var, Len, 0)
;    Return, StrPut(Str, &Var, Enc)
; }